home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / include / Sgm / PrintBoxP.h.z / PrintBoxP.h
C/C++ Source or Header  |  1996-05-06  |  14KB  |  345 lines

  1. /**************************************************************************
  2.  *                                      *
  3.  *           Copyright (c)    1991 Silicon Graphics, Inc.          *
  4.  *            All Rights Reserved                    *
  5.  *                                      *
  6.  *       THIS    IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI          *
  7.  *                                      *
  8.  * The copyright notice above does not evidence any actual of intended      *
  9.  * publication of such source code, and is an unpublished work by Silicon *
  10.  * Graphics, Inc. This material contains CONFIDENTIAL INFORMATION that is *
  11.  * the property of Silicon Graphics, Inc. Any use, duplication or      *
  12.  * disclosure not specifically authorized by Silicon Graphics is strictly *
  13.  * prohibited.                                  *
  14.  *                                      *
  15.  * RESTRICTED RIGHTS LEGEND:                          *
  16.  *                                      *
  17.  * Use, duplication or disclosure by the Government is subject to      *
  18.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights in      *
  19.  * Technical Data and Computer Software clause at DFARS 52.227-7013,      *
  20.  * and/or in similar or successor clauses in the FAR, DOD or NASA FAR      *
  21.  * Supplement. Unpublished - rights reserved under the Copyright Laws of  *
  22.  * the United States. Contractor is SILICON GRAPHICS, INC., 2011 N.      *
  23.  * Shoreline Blvd., Mountain View, CA 94039-7311              *
  24.  **************************************************************************
  25.  *
  26.  * File: PrintBoxP.h
  27.  *
  28.  * Description: Private include file for the print box GUI.
  29.  *
  30.  **************************************************************************/
  31.  
  32.  
  33. #ident "$Revision: 1.7 $"
  34.  
  35.  
  36. #ifndef _PUI_PRINTBOXP_H_
  37. #define _PUI_PRINTBOXP_H_
  38.  
  39.  
  40. #include <Xm/BulletinBP.h>
  41. #include <Sgm/PrintOptionPanel.h>
  42. #include <Sgm/PrintBox.h>
  43.  
  44.  
  45. /* No resource specified defaults */
  46.  
  47. #define DEF_PRINTER            NULL
  48. #define DEF_JOB_TYPE            PuiPRINTJOB_FILENAME
  49. #define    DEF_FILENAME            NULL
  50. #define DEF_FD                0
  51. #define DEF_BUFFER            NULL
  52. #define DEF_BUFSIZE            0
  53. #define DEF_SHOW_FNAME            True
  54. #define DEF_SHOW_OPTS            True
  55. #define DEF_SHOW_NUMCOPIES        True
  56. #define DEF_SHOW_BANNERTITLE        True
  57. #define DEF_SHOW_COMPLETION        True
  58. #define    DEF_SHOW_HANDLING        True
  59. #define DEF_SHOW_PRINTEROPTIONS        True
  60. #define DEF_SHOW_OPTIONSBUTTON        True
  61. #define DEF_SHOW_SAVEBUTTON        True
  62. #define DEF_VIS_COUNT            8
  63. #define DEF_PRINT_POLICY        PuiWIDGET_PRINTING
  64. #define DEF_BUTTON_PLACEMENT        PuiBUTTONS_CENTER
  65. #define DEF_BUTTON_SPACING        8
  66. #define DEF_INSENSITIVE_FORE        "black"
  67. #define DEF_INSENSITIVE_BACK        "SGILightGrey"
  68. #define DEF_PRINTER_FONT        "-*-screen-medium-r-normal-*-15*"
  69. #define DEF_DEFAULT_PRINTER_FONT    "-*-screen-bold-r-normal-*-15*"
  70. #define DEF_BUSY_CURSOR            "watch"
  71. /*    Labels */
  72. #define DEF_PRINTB_LABEL        "Print"
  73. #define DEF_USER1B_LABEL        "User1"
  74. #define DEF_USER2B_LABEL        "User2"
  75. #define DEF_USER3B_LABEL        "User3"
  76. #define DEF_USER4B_LABEL        "User4"
  77. #define DEF_OPTIONSB_LABEL        "More Options..."
  78. #define DEF_SAVEB_LABEL            "Save Options..."
  79. #define DEF_CANCELB_LABEL        "Cancel"
  80. #define DEF_HELPB_LABEL            "Help"
  81. #define DEF_FILES_LABEL            "Files to print:"
  82. #define DEF_PLIST_LABEL            "Available printers:"
  83. #define DEF_OPTS_LABEL            "Options:"
  84. #define DEF_NUMCOPIES_LABEL        "Number of copies:"
  85. #define DEF_JOBTITLE_LABEL        "Banner page title:"
  86. #define DEF_DEFTITLE_LABEL        "Default"
  87. #define DEF_SPECTITLE_LABEL        "Custom:"
  88. #define DEF_COMPLETION_LABEL        "When job is complete:"
  89. #define DEF_MAIL_LABEL            "Send mail"
  90. #define DEF_MESSAGE_LABEL        "Send message to console"
  91. #define DEF_HANDLING_LABEL        "Print file handling:"
  92. #define DEF_COPY_LABEL            "Copy to spool directory"
  93. #define DEF_LINK_LABEL            "Link in spool directory"
  94. #define DEF_PRINTERSPEC_LABEL        "Printer-specific options:"
  95. #define DEF_SAVEDLGTITLE_LABEL        "Save Settings"
  96. #define DEF_SAVEDLGSAVE_LABEL        "Save"
  97. #define DEF_SAVEDLGUSER_LABEL        "Save - Personal"
  98. #define DEF_SAVEDLGALL_LABEL        "Save - All Users"
  99. #define DEF_SAVEDLGCANCEL_LABEL        "Cancel"
  100. #define DEF_SAVEDLGMSG_LABEL        "Save spooler settings.\n\n" \
  101.             "In addition, save printer specific settings for:"
  102.  
  103. /*    Options */
  104. #define DEF_NUM_COPIES        1
  105. #define DEF_COPY        False
  106. #define DEF_MAIL        False
  107. #define DEF_MESSAGE        False
  108. #define DEF_JOB_TITLE        NULL
  109. #define DEF_SPEC_OPTS        NULL
  110.  
  111.  
  112. /* UI layout constants */
  113.  
  114. #define LABEL_FIELD_SPACE    4
  115. #define NUM_COPIES_COLS        3
  116. #define OPTS_INDENT        30
  117. #define SPEC_OPTS_COLS        25
  118. #define JOB_TITLE_COLS        15
  119. #define TEXT_FIELD_MAR        2
  120. #define ARROW_WIDTH        17
  121.  
  122.  
  123. /* Type-in field illegal characters */
  124.  
  125. #define TYPEIN_BAD_CHARS    "><&;|\"'`()^"
  126.  
  127.  
  128. /* Character set name for default printer font */
  129.  
  130. #define PRINTER_CHARSET        "printerCharset"
  131. #define DEF_PRINTER_CHARSET    "defPrinterCharset"
  132.  
  133.  
  134. /* Text field color info */
  135.  
  136. typedef struct _PuiPrintBoxFieldColors {
  137.     Pixel foreground;        /* Text field foreground color */
  138.     Pixel background;        /* Text field background color */
  139.     Pixel tshadow;        /* Top shadow color */
  140.     Pixel bshadow;        /* Bottom shadow color */
  141. } PuiPrintBoxFieldColors;
  142.  
  143.  
  144. /* Printer specific options structure */
  145.  
  146. typedef struct _PuiPrinterOption {
  147.     Boolean modified;        /* Indicates if option string has changed  */
  148.     char *option_str;        /* Printer specific option string */
  149. } PuiPrinterOption;
  150.  
  151.  
  152. /* Class part and record structures */
  153.  
  154. typedef struct _PuiPrintBoxClassPart {
  155.     int dummy;            /* Just to keep compiler happy */
  156. } PuiPrintBoxClassPart;
  157.  
  158. typedef struct _PuiPrintBoxClassRec {
  159.     CoreClassPart        core_class;
  160.     CompositeClassPart        composite_class;
  161.     ConstraintClassPart        constraint_class;
  162.     XmManagerClassPart        manager_class;
  163.     XmBulletinBoardClassPart    bulletin_board_class;
  164.     PuiPrintBoxClassPart    puiPrintBox_class;
  165. } PuiPrintBoxClassRec;
  166.  
  167.  
  168. /* Instance part and record structures */
  169.  
  170. typedef struct _PuiPrintBoxPart {
  171.     /* Public - General Resources */
  172.     int res_num_printers;        /* Num printers available (read-only) */
  173.     SLPrinterStruct *res_printer_list;    /* Available printers (read-only) */
  174.     char *res_default_printer;        /* System default printer (read-only) */
  175.     char *res_printer;            /* Printer specified as resource */
  176.     int res_job_type;            /* Print job type (eg. filename) */
  177.     char *res_filename;                /* Print file specified as resource */
  178.     int res_fd;                /* Print job file descriptor */
  179.     XtPointer res_buffer;        /* Print job buffer */
  180.     int res_bufsize;            /* Number of bytes in buffer */
  181.     int res_print_policy;        /* Whether widget or app prints */
  182.     Boolean res_show_fname;        /* Show filename entry field */
  183.     Boolean res_show_opts;        /* Show options */
  184.     Boolean res_show_numcopies;        /* Show number of copies option */
  185.     Boolean res_show_bannertitle;    /* Show banner title option */
  186.     Boolean res_show_completion;    /* Show job completion notify option */
  187.     Boolean res_show_handling;        /* Show job handling option */
  188.     Boolean res_show_printeroptions;    /* Show printer specific options */
  189.     Boolean res_show_optionsbutton;    /* Show Options button */
  190.     Boolean res_show_savebutton;    /* Show Save button */
  191.     Boolean res_filename_sensitive;    /* Filename field sensitivity */
  192.     Boolean res_numcopies_sensitive;    /* Number copies field sensitivity */
  193.     Boolean res_poptions_sensitive;    /* Printer options field sensitivity */
  194.     int res_button_placement;        /* Action area button placement */
  195.     int res_button_spacing;        /* Action area button horiz. spacing */
  196.     int res_vis_count;            /* Printer list visible item count */
  197.     XFontStruct *res_printer_font;    /* Font for printer list */
  198.     XFontStruct *res_def_printer_font;    /* Font for default printer */
  199.     Cursor res_busy_cursor;        /* Busy cursor for option panel exec */
  200.     /* Public - Labels */
  201.     XmString res_printb_label;        /* Print button label string */
  202.     XmString res_user1b_label;        /* User defined button 1 label string */
  203.     XmString res_user2b_label;        /* User defined button 2 label string */
  204.     XmString res_user3b_label;        /* User defined button 3 label string */
  205.     XmString res_user4b_label;        /* User defined button 4 label string */
  206.     XmString res_optionsb_label;    /* Options button label string */
  207.     XmString res_saveb_label;        /* Save button label string */
  208.     XmString res_cancelb_label;        /* Cancel button label string */
  209.     XmString res_helpb_label;        /* Help button label string */
  210.     XmString res_files_label;        /* File entry field label string */
  211.     XmString res_plist_label;        /* Printer selection label string */
  212.     XmString res_opts_label;        /* Option area label string */
  213.     XmString res_numcopies_label;    /* Number of copies label string */
  214.     XmString res_title_label;        /* Banner page title label string */
  215.     XmString res_deftitle_label;    /* Default title label string */
  216.     XmString res_spectitle_label;    /* Specify title label string */
  217.     XmString res_complete_label;    /* Job completion label string */
  218.     XmString res_complete_mail_label;    /* Mail on completion label string */
  219.     XmString res_complete_mess_label;    /* Message on complete label string */
  220.     XmString res_handling_label;    /* Job handling label string */
  221.     XmString res_handling_copy_label;    /* Copy job label string */
  222.     XmString res_handling_link_label;    /* Link job label string */
  223.     XmString res_spec_options_label;    /* Printer specific options label */
  224.     XmString res_savedlg_title_label;    /* Save dialog title label */
  225.     XmString res_savedlg_saveb_label;    /* Save dialog save button label */
  226.     XmString res_savedlg_userb_label;    /* Save dialog user save button label */
  227.     XmString res_savedlg_allb_label;    /* Save dialog all save button label */
  228.     XmString res_savedlg_cancelb_label;    /* Save dialog cancel button label */
  229.     XmString res_savedlg_msg_label;    /* Save dialog message label */
  230.     /* Public - Callbacks */
  231.     XtCallbackList res_print_callback;    /* Print button callback list */
  232.     XtCallbackList res_user1_callback;    /* User button 1 callback list */
  233.     XtCallbackList res_user2_callback;    /* User button 2 callback list */
  234.     XtCallbackList res_user3_callback;    /* User button 3 callback list */
  235.     XtCallbackList res_user4_callback;    /* User button 4 callback list */
  236.     XtCallbackList res_save_callback;    /* Save button callback list */
  237.     XtCallbackList res_cancel_callback;    /* Cancel button callback list */
  238.     XtCallbackList res_help_callback;    /* Help button callback list */
  239.     XtCallbackList res_jobinfo_callback;/* Print job information callback */
  240.     XtCallbackList res_pr_select_callback;    /* Printer selection callback */
  241.     XtCallbackList res_pr_action_callback;    /* Printer action callback */
  242.     XtCallbackList res_error_callback;          /* Libspool error callback */
  243.     XtCallbackList res_opt_error_callback;    /* Option panel error callback */
  244.  
  245.     /* Public - Option resources */
  246.     /*        Number of copies */
  247.     int res_numcopies;
  248.     /*        Banner page */
  249.     char *res_job_title;
  250.     /*        Job completion */
  251.     Boolean res_mail;
  252.     Boolean res_message;
  253.     /*        Print file handling */
  254.     Boolean res_copy;
  255.     /*        Printer specific options */
  256.     char *res_spec_opts;
  257.  
  258.     /* Private - State */
  259.     Widget work_area;            /* User defineable work area */
  260.     Widget pf_form;            /* Filename and printer list form */
  261.     Widget option_form;            /* Job option area form */
  262.     Widget separator;            /* Action area separator */
  263.     Widget action_form;            /* Action area form */
  264.  
  265.     Widget printb_widget;        /* Print button widget ID */
  266.     Widget user1b_widget;        /* User defined button 1 ID */
  267.     Widget user2b_widget;        /* User defined button 2 ID */
  268.     Widget user3b_widget;        /* User defined button 3 ID */
  269.     Widget user4b_widget;        /* User defined button 4 ID */
  270.     Widget optionsb_widget;        /* Options button widget ID */
  271.     Widget saveb_widget;        /* Save button widget ID */
  272.     Widget cancelb_widget;        /* Cancel button widget ID */
  273.     Widget helpb_widget;        /* Help button widget ID */
  274.     Widget files_label_widget;        /* File list text field label */
  275.     Widget plist_label_widget;        /* Printer list label */
  276.     Widget opts_label_widget;        /* Options list label */
  277.     Widget numcopies_label_widget;    /* Number of copies label */
  278.     Widget title_label_widget;        /* Banner page title label */
  279.     Widget complete_label_widget;    /* Job completion label */
  280.     Widget handling_label_widget;    /* Job handling label */
  281.     Widget spec_options_label_widget;    /* Printer specific options label */
  282.     Widget files_widget;        /* File list text field */
  283.     Widget plist_widget;        /* Printer list widget */
  284.     Widget action_rc;            /* Action area button row column */
  285.     Widget opts_rc_widget;        /* Options row/col widget */
  286.     Widget opts_sw_widget;        /* Options scrolled window */
  287.     Widget save_dialog_widget;        /* Options save dialog widget */
  288.     Widget save_list_widget;        /* Save dialog's list widget */
  289.     Widget save_msg_widget;        /* Save dialog's message lbl widget */
  290.     int selected_printer_index;        /* Index of selected printer (0 base) */
  291.     Boolean adding_pb_widgets;        /* Indicates who is adding children */
  292.     PuiPrintBoxFieldColors tfield_sensitive;    /* Field sensitive colors */
  293.     PuiPrintBoxFieldColors tfield_insensitive;    /* Field insensitive colors */
  294.     char *user_name;            /* User's login name */
  295.     PuiPrinterOption *printer_options;    /* Printer specific options array */
  296.     int init_error_code;        /* Initialization error code */
  297.     PuiOptionPanel **option_panels;    /* Array of option panels */
  298.  
  299.     /* Private - Job submittal settings */
  300.     int num_copies;            /* Number of copies */
  301.     int copy_file;            /* Print file handling */
  302.     int mail;                /* Completion notification */
  303.     char *job_title;            /* Print job title */
  304.     char *options;            /* Spooler specific options */
  305.  
  306.     /* Private - Print option state */
  307.     /*        Number of copies */
  308.     Widget numcopies_text_widget;
  309.     /*        Banner page */
  310.     Widget banner_deftitle_widget;
  311.     Widget banner_spectitle_widget;
  312.     Widget banner_select_widget;
  313.     Widget banner_text_widget;
  314.     /*        Job completion */
  315.     Widget complete_mail_widget;
  316.     Widget complete_mess_widget;
  317.     /*        Print file handling */
  318.     Widget handling_link_widget;
  319.     Widget handling_copy_widget;
  320.     /*        Printer specific options */
  321.     Widget spec_options_widget;
  322. } PuiPrintBoxPart;
  323.  
  324. typedef struct _PuiPrintBoxRec {
  325.     CorePart        core;
  326.     CompositePart    composite;
  327.     ConstraintPart    constraint;
  328.     XmManagerPart    manager;
  329.     XmBulletinBoardPart    bulletin_board;
  330.     PuiPrintBoxPart    printBox;
  331. } PuiPrintBoxRec;
  332.  
  333.  
  334. /* Printing options structure */
  335.  
  336. typedef struct _PuiPrintBoxOption {
  337.     void (*create_func)(PuiPrintBoxPart*, Widget);
  338.     void (*set_func)(PuiPrintBoxPart*);
  339.     void (*get_func)(PuiPrintBoxPart*);
  340.     void (*syn_get_func)(Widget, int, XtArgVal*);
  341. } PuiPrintBoxOption;
  342.  
  343.  
  344. #endif /* _PUI_PRINTBOXP_H_ */
  345.